約 5,254,611 件
https://w.atwiki.jp/tmtbnc/pages/22.html
Array Object Array Ruby C Array rb_cArray Array.new rb_ary_new() Array.new(size) rb_ary_new2(len) rb_ary_new3(n, va_alist) rb_ary_new4(n, elts) Array#[] rb_ary_aref(argc, argv, ary) Array#[](nth) rb_ary_entry(ary, long offset) Array#[]=(nth, val) rb_ary_store(ary, long idx, val) Array#+ rb_ary_plus(x, y) Array# rb_ary_push(ary, item) Array# = rb_ary_cmp(ary1, ary2) Array#assoc rb_ary_assoc(ary, key) Array#at rb_ary_entry(ary, long offset) Array#clear rb_ary_clear(ary) Array#concat rb_ary_concat(x, y) Array#delete rb_ary_delete(ary, item) Array#delete_at rb_ary_delete_at(ary, long pos) Array#dup rb_ary_dup(ary) Array#each rb_ary_each(ary) Array#freeze rb_ary_freeze(ary) Array#include? rb_ary_includes(ary, item) Array#join rb_ary_join(ary, sep) Array#pop rb_ary_pop(ary) Array#rassoc rb_ary_rassoc(ary, value) Array#reverse! rb_ary_reverse(ary) Array#shift rb_ary_shift(ary) Array#slice rb_ary_aref(argc, argv, ary) Array#sort rb_ary_sort(ary) Array#sort! rb_ary_sort_bang(ary) Array#to_s rb_ary_to_s(ary) Array#unshift rb_ary_unshift(ary, item) obj.to_ary rb_ary_to_ary(obj) rb_values_at(obj, olen, argc, argv, func) static VALUE ary_alloc(klass) VALUE klass; { NEWOBJ(ary, struct RArray); OBJSETUP(ary, klass, T_ARRAY); ary- len = 0; ary- ptr = 0; ary- aux.capa = 0; return (VALUE)ary; } static VALUE ary_new(klass, len) VALUE klass; long len; { VALUE ary = ary_alloc(klass); if (len 0) { rb_raise(rb_eArgError, "negative array size (or size too big)"); } if (len ARY_MAX_SIZE) { rb_raise(rb_eArgError, "array size too big"); } if (len == 0) len++; RARRAY(ary)- ptr = ALLOC_N(VALUE, len); RARRAY(ary)- aux.capa = len; return ary; } VALUE rb_ary_new2(len) long len; { return ary_new(rb_cArray, len); } VALUE rb_ary_new() { return rb_ary_new2(ARY_DEFAULT_SIZE); } VALUE #ifdef HAVE_STDARG_PROTOTYPES rb_ary_new3(long n, ...) #else rb_ary_new3(n, va_alist) long n; va_dcl #endif { va_list ar; VALUE ary; long i; ary = rb_ary_new2(n); va_init_list(ar, n); for (i=0; i n; i++) { RARRAY(ary)- ptr[i] = va_arg(ar, VALUE); } va_end(ar); RARRAY(ary)- len = n; return ary; } VALUE rb_ary_new4(n, elts) long n; const VALUE *elts; { VALUE ary; ary = rb_ary_new2(n); if (n 0 elts) { MEMCPY(RARRAY(ary)- ptr, elts, VALUE, n); } /* This assignment to len will be moved to the above "if" block in Ruby 1.9 */ RARRAY(ary)- len = n; return ary; }
https://w.atwiki.jp/kplus/pages/101.html
ruby 概要 1995年、松本行弘氏が開発しリリースしたスクリプト言語。 2005年、David Heinemeier氏によって開発された「Ruby On Rails」が Ruby言語の火付け役になり、今や言語の中でもトップクラスの利用率と 人気を誇っている。 ステータス 最新バージョン リビジョン リリース日 価格 DL先 2.0.0 p195 2013/05/14 無償 http //www.ruby-lang.org/ja/ バージョンヒストリー 1.0 1996/12/25 1.2 1998/12/01 1.4 1999/08/01 1.6 2000/09/01 1.8 2003/08/01 1.9 2007/12/01 2.0 2013/02/24 ナレッジ 1 CentOSにRubyをインストールする
https://w.atwiki.jp/programming_note/pages/13.html
Genaral Array.new() Hash.new() gem module mechanize Timestamp Performance require 'mysql' require 'kconv' # encoding require Mechanize require nokogori require 'open-uri' require 'json' 正規表現 形態素解析 DB接続 Scraping 基本的なScraping 特定URL上の文字列を配列に入力 対象URLの配列入力 検索エンジン 特定検索エンジンの検索結果の柔軟な出力 ページ上のFormからの検索結果から リンク抽出 特定URL上の正規表現マッチの文字列抽出 特定URL上でログイン後 Gmail IMAP関連ページのScraping Twitter からのデータ抽出 Genaral Array.new() @c.each do |test| print test["name"] puts test["permalink"] end exit; 配列の足し算 + 長さを揃える @date.to_i.times do if @Spentamount.length @date @Spentamount.unshift(0) # 最後に足す時は a.push(10) puts add else end http //www.namaraii.com/rubytips 逆引きRuby Hash.new() gem module mechanize Timestamp @b = 1326962960 @a = Time.at(@b) # @b は Fixnum class である必要 puts @a Performance time コマンド to_i で 文字列を数値変換 @timestamp.to_i ((15339+20)*24-8)*60*60 require mysql MySQL DB接続 db = Mysql new("localhost","root","","companyapp_development") # table = db.query("SELECT * from crunchbase_companylist limit 10") stmt = db.prepare " Insert into crunchbase_companylist(name2,permalink) values(?,?)" MySQL DB入力 @c.each do |test| stmt.execute test["name"],test["permalink"] end require kconv # encoding str = Hello, るびま! # 何かしらの文字コードの文字列 str_eucjp = str.toeuc # 文字コードを自動判定し、 EUC-JP に変換 str_shiftjis = str.tosjis # Shift_JIS に変換 str_iso2022jp = str.tojis # ISO-2022-JP (JIS) に変換 str_utf8 = str.toutf8 # UTF-8 に変換 str_utf16 = str.toutf16 # BOM 無し UTF-16BE に変換 require Mechanize require nokogori require open-uri @a = Array.new() open("http //api.crunchbase.com/v/1/companies.js") do |f| @b = f.read end require json String Object @bをParse してJSONとして認識する @c = JSON.parse @b 正規表現 String のMatch or not の判定 + 3つへの分解 特定部分をScanし配列に流し込む /Users/uenoyama718/Sites/Log_Analysis/test10.rb 特定文字列消去 hoge.delete("aiu") 形態素解析 DB接続 My SQL Tableのオープン 解析結果のMy SQLへのデータ入力 /Users/uenoyama718/Sites/scraping/crunchbase.rb Scraping 基本的なScraping 特定URL上の文字列を配列に入力 /Users/uenoyama718/Sites/Scraping_Ruby/URL/yahoo 対象URLの配列入力 /Users/uenoyama718/Sites/scraping/yahoonews.rb 検索エンジン 特定検索エンジンの検索結果の柔軟な出力 ページ上のFormからの検索結果から リンク抽出 /Users/uenoyama718/Sites/scraping/google.rb 特定URL上の正規表現マッチの文字列抽出 # Nokogiri でなんとかなる 特定URL上でログイン後 # Gmail IMAP関連ページのScraping 通常のHTML PageのScrapingとことなり、IMAP経由で各メール本文をPullする必要 = 別個Moduleが必要 Twitter からのデータ抽出 /Users/uenoyama718/Sites/scraping/getTimeline.pl 榊さんモジュール
https://w.atwiki.jp/bitchgirls/pages/44.html
t02-035 名前:コンパイル :08/01/14 16 46 35 ID 8LDekdT7 誰もいなくなった運動場で、野球部員の山田誠司は玉拾いをしていた。空が黄金色 に染まり、寒気が肌を刺してくる中、他の部員と共にバケツへせっせと玉を放り込む。 まだユニフォームすら着せてもらえぬ一年生だが、いつかは甲子園の土を踏みたい などと思っていると、背後からマネージャーの岩田真紀がやってきた。 「誠司」 「どうした」 「悪いけど、先に帰ってて。私、用事残してるの」 「わかった」 真紀はそう言って踵を返し、部室がある方へ走っていった。同い年の幼なじみで、野球 好き。かつてはリトルリーグのチームでエースの看板を背負っていた真紀も今は野球 をやめ、選手を管理する道を選んでいる。 小柄な真紀はリトルリーグでしか通用せず、中学ではソフトボールへの転向も試みた が、選手として光る物は無かった。一方、誠司は中学に入るなり、野球部へ入った。夢 を諦めざるを得なかった真紀の代わりに、自分が頑張ろうと思ったからだ。そして、名門 といわれる野球の強豪校へ真紀と共に進んだ。それからまもなく一年が過ぎようとして いるが、誠司は今も玉拾いの位置に甘んじている。 運動場を均した後、誠司は一年生を代表して部室に後片付けが済んだ事を報告に行っ た。部室は狭く、ロッカーを利用できるのはレギュラーのみで、誠司のような者が中に入 る事は許されていないが、例外的に一人だけ自由に入れる人間がいる。 「山田です。後片付け終わりました」 部室の前で報告すると、中から誰かが帰ってよしと言った。誠司は扉の向こうに一礼し て、部室の前から去った。 t02-036 名前:コンパイル :08/01/14 17 18 54 ID 8LDekdT7 去り際、部室の中から笑い声が聞こえた。レギュラー達の大声と、もうひとつは女の 声だった。この野球部でレギュラー以外に部室へ入れるたった一人といえば、真紀 しかいない。そして週に一度か二度、真紀の帰りは遅くなる。誠司はそのまま帰ろう とはせず、裏口へ回った。壁をよじ登り、明かり取りのある場所へへばりついて誰に も悟られぬよう部室の中を覗いた。 狭い部室にレギュラー部員が数人、真紀を囲むように立っている。真紀は裸で、部 員も裸。膝をついた真紀は両手に男根を握り、可憐な唇にも男根を含んでいた。 部室には真紀の物と思しき衣服が散乱し、使用済みの避妊具がそこいらに放って ある。明かり取りから覗く誠司の耳にも真紀が男根を啜る音が届き、部員達の嘲笑 が脳に刻まれる。 「おらおら、手がお留守だぞ」 「あはっ、ごめんなさい」 男根を握っている部員に叱咤されると、真紀はおどけてみせた。 「おしゃぶりに夢中になっちゃって」 「お前は俺達の玩具なんだから、しっかり頼むよ」 「すみません」 真紀は部員達に媚びるような上目遣いをし、再び三本の男根に奉仕を開始した。 その間、手持ち無沙汰となった部員たちは真紀の乳房を弄った。華奢な体の割りに は二つの山は小高く、餅のような白い肌は揉み解されて紅に染まっている。 「おお……出るぞ、真紀」 口唇愛撫中の部員が腰をわななかせると、真紀は目を細めて男根を絞るように唇 を窄めた。そして、ごくり、ごくりと男根から放たれた子種を飲む。 t02-037 名前:コンパイル :08/01/14 17 49 56 ID 8LDekdT7 「ふーッ……凄く濃いね」 男根と唇を粘液が繋ぎ、真紀の口元は淫らに輝いている。子種を一気に飲み干した 幼馴染の姿を見ると、誠司は心臓を掴れるような悪寒に襲われた。 「俺もいくぞ」 「俺もだ」 手で愛撫されていた部員たちも達し、一時に白濁液が全身に注がれると、真紀は嫌 がる素振りも見せずに笑った。 「あはは。凄く出てる!笑っちゃうくらい出るね」 「真紀の手コキが巧みだからさ」 「もう、私の体に飽きてきたのかな、なんて思ってたけどね」 真紀は立ち上がり、短めに揃えた髪を手で梳いた。 「飽きるもんか、この体に」 部員が背後から真紀を抱きしめ、下半身を密着させた。真紀は自ら腰を前後に動か すと、淫らに笑う事で部員の望みに応えようとする。 「なあ、今日はケツの穴でやらせてくれよ」 「いいけど、これで甲子園に出られなかったら、承知しないわよ」 「やった。この前は嫌がってたもんな」 「あまりいい気分じゃないもの、あれ。でも、嫌いじゃないわ」 「よくわからないが、OKって事だよな」 「はまりそうで、ね。怖いのよ」 真紀は床に四つんばいとなり、尻を部員たちの方へ向けた。すぼまりはしっかりと 閉じており、まだ穢れを知らぬように見える。 「ゴムだけはお願いね」 「心得てるさ」 部員の一人が真紀の尻に乗り、腰を突き出した。 「うッ……」 「入っていくぞ」 「ああ……恥ずかしいけど、いいわ」 避妊具を装着した男根は、大した抗いも受けずにすぼまりの中へ埋まっていく。 t02-038 名前:コンパイル :08/01/14 18 15 43 ID 8LDekdT7 この時、壁にへばりついていた誠司の力はつき、明り取りから下に落ちた。しかし、 「ああ、いいッ!全員で、お尻を可愛がって……ああ……」 という真紀の叫びを聞き、中で何が行われているかを察する事は出来たのであっ た。 しばらくして一年生部員の間で、妙な噂が流れるようになった。 「マネージャーがこの前、男子トイレに連れ込まれる所を見たんだ」 ある一年生が、男子生徒数人と真紀が一緒に男子トイレに入って行く姿を見たと 言うのである。それを聞き、誠司の胸は痛んだ。 「そういえば、最近、顔出さないな、マネージャー……」 「不良の玩具らしいぜ……」 誠司自身もこの所、真紀とは顔を合わせていない。気にはかけていたが、レギュラ ー部員たちとの荒淫を見て以来、話しかける気には到底、ならなかった。 そしてある日、誠司がいつもの通り玉拾いをしている時の事。 「誠司」 背後から自分の名前を呼ぶのは、制服姿の真紀であった。 「ああ」 誠司には言葉がない。ただ、玉を拾うしかなかった。 「最近、どうしてるんだ。部に顔も出さずに」 「ちょっとね。またそのうち……」 しかし、誠司はその言葉を信じられなかった。むしろ、別れの挨拶のようにすら思 える。 「誠司は野球頑張ってね」 「ああ」 それだけ言葉を交わすと、真紀は校門の方へ走って行った。その先には改造バイク が何台も並び、見るからにやさぐれた輩が何人も立っている。そして真紀はそのうち の一台にまたがり、男と一緒に去って行った。 「くだらねえ!」 玉を拾っていた誠司は急に何もかもが嫌になった。玉の入ったバケツを放り出し、 運動場で大の字になると、流れて行く黄金色の雲ばかりを見ていた。 おすまい
https://w.atwiki.jp/memo0915/pages/14.html
Ruby 8月20日 技術基礎で習ったこと プログラミングの入門として簡単なプログラムを学んだ。 ・puts "文字列":文字列を出力する ・条件分岐 ・繰り返し ・メソッドの定義 簡単なwebappの作成(あんまり理解できていない) ・rubyでhtmlを出力 ・データを送る ・データを受け取る 個人学習 sayコマンド、rubyの簡単なプログラムを使ってwebappを作る 「日本語に聞こえる英語」がまとめてあるページ(ボタンを押すとsayコマンドでしゃべる) 問題 1.rubyのソースからコマンドを実行 2.ボタンなどを表示させるにはruby on railsが必要そう 1.rubyのソースからコマンドを実行 rubyからコマンドを実行する方法は複数ある。今回はsystemという関数で実行する。使い方は以下の通り。 #!/usr/bin/ruby system("say hello") system("○○")とすれば、○○のコマンドが実行される。すごく簡単! 2.ボタンなどを表示させるにはruby on railsが必要 そもそもruby on railsは何か 『基礎Ruby on Rails』によると Ruby on Railsは、ウェブアプリケーションを開発するためのフレームワークです。 フレームワークという言葉がよくわかりませんが、とりあえず、Ruby on Railsを使えば、webアプリケーションが作れそうなのでこの書籍を参考に勉強する。 ☆もしかするとwebappからコマンドライン実行するのは無理かもしれない。セキュリティの関係で☆ 8月23日 「日本語に聞こえる英語まとめページ」の制作 とりあえず、完成した。Ruby on Railsは一切使わずに出来た。 1.say.html html head meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" title say /title /head body h1 日本語に聞こえる英語 /h1 form action ="/cgi-bin/say.cgi" method="get" input type="submit" name="btn1" value="What is it now?"/ br input type="submit" name="btn2" value="Sightseeing for ten days"/ br input type="submit" name="btn3" value="Are you a doctor?"/ br input type="submit" name="btn4" value="Can you celebrate?"/ br input type="submit" name="btn5" value="Do you remember?"/ br input type="submit" name="btn6" value="Get out here!"/ br input type="submit" name="btn7" value="Get out of here!"/ br input type="submit" name="btn8" value="Give me a chocolate"/ br input type="submit" name="btn9" value="Have a nice day"/ br input type="submit" name="btn10" value="I kill you!"/ br input type="submit" name="btn11" value="No way!"/ br input type="submit" name="btn12" value="take it easy"/ /body /html ☆point☆ input type="submit" name="××" value="○○"/ typeをsubmitにするとcgiファイルへ値などが送信される。 nameはcgiファイルで扱うときに使うデータ名 valueはボタン上に表示される文字 2.say.cgi #!/usr/bin/ruby print "Content-type text/html; charset=Shift_JIS¥n¥n" require "cgi-lib" input = CGI.new if inputdata=input["btn1"] then message="what time is it now?" nihongo ="ほったいもいじんな!" elsif inputdata=input["btn2"] then message="Sightseeing for ten days" nihongo="斉藤寝具店です" elsif inputdata=input["btn3"] then message="Are you a doctor?" nihongo="鮎(あゆ)は毒だ" elsif inputdata=input["btn4"] then message="Can you celebrate?" nihongo="キャイ〜ンゆるせデブ冷凍" elsif inputdata=input["btn5"] then message="Do you remember?" nihongo="丼(どんぶり)メンマ" elsif inputdata=input["btn6"] then message="Get out here!" nihongo="下駄売る日や" elsif inputdata=input["btn7"] then message="Get out of here!" nihongo="下駄飛ぶ部屋" elsif inputdata=input["btn8"] then message="Give me a chocolate" nihongo="君はちょっと冷凍" elsif inputdata=input["btn9"] then message="Have a nice day" nihongo="幅 無いんでー" elsif inputdata=input["btn10"] then message="I kill you!" nihongo="歩けるよ" elsif inputdata=input["btn11"] then message="No way!" nihongo="井上!" elsif inputdata=input["btn12"] then message="take it easy" nihongo="低血糖、維持" end system("say #{message}") print " html body h1 #{nihongo} /h1 br h2 #{message} /h2 /body /html " ☆point☆ system("○○")でコマンドラインを実行される。
https://w.atwiki.jp/soscomp/pages/69.html
Ruby 主にRails以外。Railsの話題に関してはRuby on Railsを参照 Ruby Introduction RubyでOpenGL 逆引きRuby 逆引きRuby/SDL 逆引きRuby4Skype 各大学のRubyが関連する講義ページ total - today - yesterday - 名前 コメント このページへのアクセス数 total - today - yesterday - このページのタグ一覧 みみなし
https://w.atwiki.jp/mi_ic2/pages/131.html
逆コンパイル バージョン: industrialcraft-2-2.2.828-experimental 概要 逆コンパイルとは、ソースコードから実行可能コード・中間コード・別のプログラミング言語のソースコードなどを生成するコンパイルの逆の処理で、そのような生成されたコードから元となるソースコードを生成する処理である。 プログラミング言語は、基本的に機械が実際に実行するまでの間のどこかで、人間が読むための形式(通常はテキスト形式)を分析する構文解析の過程を経なければならない。構文解析後のデータをどのように扱うかは言語によって異なるが、そのまま実行したり(インタプリタ型言語)、再び構文解析を行うコストを省略するために中間コードや直接OSが実行できる実行可能コードの形で一旦保存しておいたり(コンパイル型言語)する。構文解析には付属して意味解析などのより高等な解析を行う場合もある。 現在(2017年11月)のJavaは、ソースコードをJavaバイトコードと呼ばれる中間コードにコンパイル(javacでのコンパイル)したのち、実行直前に実行可能コードにコンパイル(JITコンパイラでのコンパイル)して、それを実行させるという二度手間(機械語の解析を含めると三度手間)のコンパイル形態を持っている。このうち、JITコンパイラは当初は存在しなかった(バイトコードを解析しながら実行するインタプリタ型だった)らしいが、実行速度の面で新たに加えられた。MinecraftのMODの配布形式であるJARは、バイトコードであるclassファイルといくつかのその他のメタなファイルをZIP圧縮して拡張子を変えた奴である。どうせランタイムが必要ならソースコードの状態で配れよとか言わない。 ソースコード ――[javac]―→ バイトコード(中間コード) ――[JITコンパイラ]―→ 実行可能コード ――[CPU]―→ 実行 .java .class≒.jar [人間が読める] [============ファイルの状態で存在する============] [========機械が実行できる========] [==========OSに依存する=========] Javaにおける逆コンパイル Javaにおける逆コンパイルは専らJavaバイトコード(.class≒.jar)からJavaソースコード(.java)への変換であり、Javaにおける通常のコンパイル(javacおよびjar)の逆の変換を行うものである。この段階の処理は特定のOSに依存した実行ファイル(Windowsの場合は.exeファイルなど)は関与せず、そのためJavaのコンパイルおよび逆コンパイルではプログラマーはOSごとの違いを無視して作業を行うことができる。 この逆コンパイルという処理はJavaにおいては意外なほど簡単であり、Pleiades Eclipseに標準でくっついてきていたりする。そのため、Javaをコンパイルする際には基本的にソースコードが筒抜けになると考えておいた方が良い。 Minecraft(Forge)における逆コンパイル Minecraft界隈での逆コンパイルもJavaにおける逆コンパイルと同様で、バイトコードをソースコードに変換するものである。ただし、Minecraftでは難読化というプログラムを逆コンパイルから守る処理によって、単に逆コンパイルしただけではソースコードをまともに編集できない。 プログラミングではデータを格納する変数や動作を表す関数といったものに名前を付けて利便性を高めている。このような物の名前はJavaではバイトコードの段階でも維持され、プログラマー同士が互いのプログラムを理解するのに一役買っているが、難読化はこの名前を破壊しプログラマーのやる気を削ぐことで配布物を改造や解析などから守っている。 Minecraft Forgeでは、Moddingの際に難読化済みの名前に再び意味のある名前を付けることで難読化対策をしている。そして、ユーザーの実行環境のMinecraftは難読化されているため、意味のある名前のMODのバイトコードを難読化して配布している(Modding界隈では無印(難読化あり)とdev版(難読化なし)であり、IC2Expにも存在する)。 本サイトでは、ソースコードが見当たらないJavaプログラムについてソースコードと言ったら、実際に開発者の手元にあるソースコードではなく逆コンパイルして得られたJavaソースコード(略して逆コンパイルコード)を指すものとする。 Jarの逆コンパイル環境を整える 特に逆コンパイル対策がされていないJarファイルは、EclipseやJD-GUIといった様々なツールからソースコードが見れる(JD-GUIならインストールしてD D(ドラッグアンドドロップ)で済むので初心者でも割と簡単に見れる読解できるかは謎)が、ここではfernflowerを使う。これはどうやらMinecraft Forgeでも使われているようだ。 以下ではWindows 10/PowerShell/日本語環境でのインストールについて解説する。 Fernflowerの入手 OSにJava(JRE)をインストールしてPathが通っていることを確認する 自前のJREを使いたい場合はそれでもいい それこそMinecraftのランチャーが引っ張ってくる奴でも行ける https //github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engineからソースコードをZIPでダウンロードする なんか検索だとhttps //github.com/fesh0r/fernflowerの方が上にくる 解凍したフォルダに入り、build.gradleのあるフォルダでコマンドラインを起動 フォルダをShift+右クリックからでも起動できる .\gradlew jarと実行 ここについて詳しくはGradleで調べてほしい ただしプログラミング初心者の状態から挑むとかなり修羅の道 はプロンプトという既に画面に表示されている記号を表すで、キーボードから打ち込むものではない build/libsにfernflower.jarが出来上がる Fernflowerの実行 fernflower.jarとIC2Expのdev版のjarを同一フォルダに置いてPowerShellから以下を実行。 java -jar .\fernflower.jar .\industrialcraft-2-2.2.828-experimental-dev.jar src 結果、srcフォルダにソースコードが出力される。 バッチファイルの作成(Windows前提) このまま常にコマンドからfernflower.jarを呼び出してもいいが、できれば最低でもD Dで実行したいのでバッチファイルを作る。 どこかしらに次のようなフォルダを作る decompile fernflower.jar fernflower.bat (以下の内容) java -jar %~dp0fernflower.jar %1 %~dp0decompile mkdir %~dpn1-src cd /d %~dpn1-src jar xf %~dp0decompile\%~nx1 del %~dp0decompile\%~nx1 pause これで、fernflower.batに対してjarファイルをドロップするとjarファイルと同じフォルダに逆コンパイルされたコードが入ったフォルダが生成されるようになった。 レジストリの設定(Windows前提) このまま常にバッチファイルにドロップしてもいいが、できれば右クリックしたらこの場所にソースを生成するコマンドが欲しい。そこで、一連の動作を行うバッチファイルを作りレジストリを操作してJarファイルに関連付ける。 レジストリエディタを起動する Windowsキー+R→rededitで呼べる HKEY_CLASSES_ROOT\jarfile\shellに飛ぶ Javaをインストールしていないと無いと思う、もしかしたら作ってもいいかも キーHKEY_CLASSES_ROOT\jarfile\shell\open\commandを作る (既定)のデータを さきほどのfernflower.batのフルパス名 %1 にする 適当なJarファイルを右クリックしてdecompileという項目が増えていれば成功。 逆コンパイルコードの読み方 ここまでで様々なJarを逆コンパイルして.javaファイルの入ったフォルダが入手できるようになっているので、実際にdev版のIC2Expをダウンロードしてソースコードを得る。ここではソースコードを読みやすくするためのいくつかの点について触れる。 IDEによる支援 結局のところとりあえず読むならIDEを入れた方が早い。EclipseのJava版かUltimate版をダウンロードし、新規プロジェクトないしForgeプロジェクトを使って、srcフォルダに逆コンパイルコードをぶち込んでしまおう。 JarをJD-GUIに読み込ませてもコードハイライトや定義へのジャンプ機能など様々なことができるが、ソースのフォーマット(成形)やより高度な検索はIDEを使うのが良い。一応実行もできる。 ファイル差分 別Verとの差分をとる場合、公式の更新履歴が信用できない場合は独自にコード差分をとることもできる。Mercurial(バージョン管理システム)のGUI(TurtoiseHG)上でコミットしてしまうのが分かりやすくて高機能か。 外部リンク GregTech6 http //gregtech.overminddl1.com/com/gregoriust/gregtech/gregtech_1.7.10/index.html#Downloads IC2Exp http //ic2api.player.to 8080/job/IC2_experimental/
https://w.atwiki.jp/chapati4it/pages/87.html
rubyとは 日本人プログラマーのまつもと ゆきひろさんが個人で開発している、 かなり人気のあるプログラム言語です。 詳しくは公式サイトで! オブジェクト指向スクリプト言語 Ruby http //www.ruby-lang.org/ja/ Rubyサンプル 複数ファイルでのプログラム(load) Rubyのバージョン確認 Ruby1.8 FasterCsvでCSVファイルの読み書き(ダブルクォーテーション付き Ruby1.8 FasterCsvでCSVファイルの読み書き+ソート Ruby1.8 1.9 構造体のようなクラスを簡単に作るクラス「Struct」 thinサンプル Ruby製webサーバthinのインストール thin(Rack)アプリを作ってみる @pagesでruby 環境構築(Windows) rubyインストール apache2インストール @pagesに合わせて設定変更 apache2 ドキュメントルートでCGIを動かそう MySQLのインストール Ruby/MySQLのインストール eclipseにRubyのプラグインをインストール サンプル @pagesでrubyをやってみる MySqlを使ってみるselect,insert
https://w.atwiki.jp/aias-closurecompiler/pages/18.html
トップページ コンパイルレベル Closure Compilerは以下の3段階のコンパイルレベル(最適化レベルとも呼ばれます)を提供します。コンパイルレベルとは単純なコメントと改行の除去からコード全体に対する大胆な変換処理に至る、コード圧縮の強度のことです。 コンパイルレベルの具体的な設定方法については、各方式の使い方の説明を参照してください。 Compilerの処理対象となるコードには、コンパイルレベルに応じて様々なコーディングルールが課せられます。詳しくはこちらを参照してください。 このページは公式サイトのこちらを元に作成しました。 WHITE_SPACE_ONLY WHITE_SPACE_ONLY は最も圧縮強度の弱いコンパイルレベルで、コメント、改行、不要なスペース、タブなどその他の空白だけを除去します。この処理によってJavaScriptの動作が影響を受けることはありません。 このレベルはコードの変更範囲が小さいという意味では最も安全ですが、圧縮率は3段階中最も低くなります。 SIMPLE_OPTIMIZATIONS SIMPLE_OPTIMIZATIONS は WHITE_SPACE_ONLY と同じコメントと空白の削除に加え、ローカル変数と関数パラメータの名称短縮を含む、式と関数の最適化を行ないます。この処理によってコードサイズはかなり小さくなります。 SIMPLE_OPTIMIZATIONS レベルでは関数内のローカルシンボルだけをリネームするため、コンパイルされたコードとそうでないコードの間の連携を妨げることはありません。 SIMPLE_OPTIMIZATIONS はデフォルトのコンパイルレベルです。 ADVANCED_OPTIMIZATIONS ADVANCED_OPTIMIZATIONS は SIMPLE_OPTIMIZATIONS と同じ処理に加え、以下に示すより大胆なコード変換によって、3つの段階の中で(だけでなく、他の圧縮ツールと比較しても)最高のサイズ圧縮率を実現します。 積極的なリネーム SIMPLE_OPTIMIZATIONS では関数内の引数と変数だけがリネームされましたが、 ADVANCED_OPTIMIZATIONS はグローバルな変数・関数・プロパティをリネームし、コードの長さを短縮します。 不使用コードの削除 ADVANCED_OPTIMIZATIONS は実行されないと考えられるコードを削除します。この機能は大きなライブラリを含むコードをコンパイルするときに特に有効です。もしライブラリ内の少しの関数しか利用されていないのであれば、Compilerがそれら以外のコードを全て削除してくれるからです。 関数のインライン化 ADVANCED_OPTIMIZATIONS は、それが安全であり、サイズ圧縮に有効であると判断した場合、関数の呼び出しを関数の内容そのものに置き換えます。この処理は一般にインライン化として知られています。同様に、定数やCompilerが置き換えても安全であると判断した変数もインライン化されます。 高い圧縮率を可能にするため、 ADVANCED_OPTIMIZATIONS はコンパイルするコードに強い制約を課します。コードがこの制約に適合していない場合、出力されたコードはおそらく正常に動作しません。 一例として、 ADVANCED_OPTIMIZATIONS レベルでコンパイルされたコードは、特別な手順を踏まなければコンパイルされていないコードと相互に連携することができません。外部からの参照を使用していると明記されていない関数やプロパティはClosure Compilerによってリネームされてしまうため、コンパイル後のコードと外部のコードの間で名前のミスマッチが発生することになるからです。 ADVANCED_OPTIMIZATIONS レベルにおけるコーディングルールの詳細については、こちらを参照してください。 ADVANCED_OPTIMIZATIONS導入の条件 管理人の個人的な意見ですが、以下の条件が満たされていなければ、 ADVANCED_OPTIMIZATIONS レベルの導入はアプリケーションを不安定化させる要因となる危険性が高いように思われます: コーディングを行うメンバ全員がCompilerのルールを深く理解していること コンパイル後に十分な(できれば自動化された)テストの実施が保証されていること
https://w.atwiki.jp/misopi/pages/25.html
MGWSIで Ruby から GT.M を使えるようにしたときの作業メモです。 MGWSI導入については → こちら GT.M / 仲介用デーモンプロセス / MUMPS向けの通信プロセス は準備済みとします。 apt-get で ruby をインストール バージョンは 1.8.7 でした ~/mgwsi/bin/m_ruby.so を /usr/local/lib/site_ruby/1.8/i486-linux/ 配下へコピー 作業は以上です。 こんな感じで動かします。 require m_ruby m_ruby = M_RUBY.new() key = Array.new(2) # データ格納 key = [1, dog ] m_ruby.ma_set( ^animal ,key, wanwan ) key = [1, cat ] m_ruby.ma_set( ^animal ,key, nya-nya- ) key = [1, snake ] m_ruby.ma_set( ^animal ,key, ... ) # データ参照 key = [1, cat ] print m_ruby.ma_get( ^animal ,key) + "\n" # データ削除 key = [1, snake ] m_ruby.ma_kill( ^animal ,key) 多段配列の場合はこんな感じで key = Array.new(5) key = [4, country1 , part1 , date1 , name1 ] data = m_ruby.ma_get( ^table ,key)